简介
在维基解密Vault 8: Hive中泄露了Hive的git目录,可通过git checkout ./
获得代码
在触发包中使用CRC-16/CCITT-FALSE算法(CRC16的算法还是挺多的,这个网站可以计算9种CRC-16的值,我们可以通过这个网站可确认具体的CRC16算法的类型,我便是从这个网站确认的)
CRC-16/CCITT-FALSE算法步骤:
首先定义了两个16大小的表,用于查表,一个用于高8位,一个用于低8位
初始的CRC16_High和CRC16_Low都是0xff(这应该也是这算法称为False的原因)
接下来便是对每一个字节进行循环操作
- 明文的高四位和CRC16_High的高四位进行异或,作为查表的索引
- 之后CRC16_High的低4位和CRC16_Low的高四位进行或云锁重新组成新的CRC16_High;CRC16_Low则是直接将原来的CRC16_Low左移四位即可
- 最后将CRC16_High和CRC16_Low分别异或查表结果即可
- 而对于明文低四位的操作也是跟高四位的一样
- 最后循环结束后,将CRC16_High跟CRC16_Low拼接起来就好了
C++实现
一开始从哪里抠出来的代码要添加头文件才能运行
1 |
|
python实现
1 | # -*-coding:utf-8-*- |
python 库
雨村后来找到一个crc的库,kali安装有点问题,建议使用ubuntu
https://pycrc.readthedocs.io/en/latest/usage.html
下面的示例代码那个0xffff正是CRC16_High,CRC16_Low结合起来的一个初始值
1 | from PyCRC.CRCCCITT import CRCCCITT |